function [F, golbal_z, golbal_acc, increment_num] = evaluate(Z, data_x, data_y,golbal_z,golbal_acc,increment_num)
num_simple = size(Z, 1);
F = zeros(num_simple, 1);
k = 5;
count = 0;
for i = 1 : num_simple
    % golbal_z非空情况下,并且Z(i, :)已经存在,就不用重复计算
    if isempty(golbal_z) == 0 && ismember(Z(i, :),golbal_z,'rows')
        [~,index] = ismember(Z(i, :),golbal_z,'rows');
        F(i, :) = golbal_acc(index,:);
    else
        data_x1 = data_x(:, Z(i, :) == 1);
        % 5-NN,作为分类器,10-fold cross-validation,kfoldLoss(Mdl):平均错误率
        Mdl = fitcknn(data_x1,data_y,'NumNeighbors',k,'CrossVal','on','KFold',10);
        acc_rate = 1 - kfoldLoss(Mdl);
        % fprintf("data total: %d feature select: Z(%d,:) acc_rate: %.4f\n",size(data_x1, 1),i,acc_rate);
        F(i, :) = acc_rate;
        golbal_z = [golbal_z;Z(i, :)];
        golbal_acc = [golbal_acc;F(i, :)];
        count = count + 1;
    end
end
increment_num = [increment_num;count];
end